去 $Mina!$ 上了解了一波虚树,$\%\%\% XZY$ 学长太强辣!
这次总算明白了些虚树,然后 $XZY$ 大佬的例题就是消耗战。
于是看了过来。
首先,考虑普通的树形 $DP$ ,设 $dp[u]$ 表示在 $u$ 为根的子树中满足目标所花费的最小代价 ,那么转移方程也不是很难,我们枚举 $u$ 的孩子 $v$ 。如果 $v$ 本身就是”能源丰富的岛屿”那么 $dp[u]+=G[i].val$ ,其中 $G[i].val$ 表示 $u$ 到 $v$ 的边的边权。为什么这样转移呢?因为 $v$ 必须切断。
那么没有必要切断的岛屿呢?就分切/不切两种情况了:
这个也很好懂。
这个时候我们打完代码交一发发现只有 $40$ 分……往下看,可以看到 $n$ 到最后的顶尖数据有 $250000$ ……
但是我们可以观察到,$\sum k_i \leq 5*10^5$ ,发现总共的 $k$ 也不过这么大,这个时候我们可以用虚树来解决。
$Qiuly$ :有关虚树的文章先咕一下蛤,最近有点忙。
建好虚树后直接用上面的转移方程做就得了。
Code:
1 |
|
本文标题:【题解】 [SDOI2011]消耗战 虚树+树形DP luoguP2495
文章作者:Qiuly
发布时间:2019年03月31日 - 00:00
最后更新:2019年05月05日 - 10:09
原始链接:http://qiulyblog.github.io/2019/03/31/[题解]luoguP2495/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。